import proxyData from "./proxy";
import observe from "./observe";

function initState(vm){
    var options = vm.$options;

    // 判断data是否存在
    if (options.data){
        initData(vm);
    }
    
}

function initData(vm){
    var data = vm.$options.data; // data是一个函数拿到data
    
    // 保存data到vm实例上
    data = vm._data = typeof data === 'function'? data.call(vm) :data || {};

    for (var key in data){
        proxyData(vm,'_data',key); // 代理data数据，将data注册到vm实例上，并劫持数据变化
    }

    observe(vm._data)

}

export {
    initState
}